/*  This file is part of CASpp.

    CASpp is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    CASpp is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with CASpp.  If not, see <http://www.gnu.org/licenses/>.

    Copyright 2014 Jérome LAURENS

    See https://code.google.com/p/idalgo/

*/

#if !defined _CASPP_MODELS_VECTOR_H_
#define _CASPP_MODELS_VECTOR_H_

#include <string>
#include <caspp/config.h>

CASPP_NS_BEGIN

CASPP_DECLARE_CLASS_REF(Node);
CASPP_DECLARE_TYPE_WRAP(NodeRef);

typedef std::vector<NodeRef> NodeRef_v;

class Vector: public NodeRef_v {
public:
    typedef NodeRef_v __super;
    typedef Vector __self;
    Vector(): __super() {}
    const std::string description() const;
    const std::string longDescription(  const std::string & name = ""
                            , const size_t depth = 0
                    , const std::string & prefix = ".") const;
};

CASPP_DECLARE_TYPE_REF(Vector);
CASPP_DECLARE_TYPE_WRAP(VectorRef);

const std::string description(const Vector & __x);
const std::string longDescription(  const Vector & __x
                                  , const std::string & name = ""
                                  , const size_t depth = 0
                                  , const std::string & prefix = ".");

CASPP_NS_END

#endif // _CASPP_MODELS_VECTOR_H_
